package com.share.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.share.order.api.domain.EndOrderVo;
import com.share.order.api.domain.OrderInfo;
import com.share.order.api.domain.SubmitOrderVo;

import java.util.List;
import java.util.Map;

/**
 * 订单Service接口
 *
 * @author YC
 */
public interface IOrderInfoService extends IService<OrderInfo> {

    /**
     * 获取未完成订单
     *
     * @param userId 用户ID
     * @return 未完成订单
     */
    OrderInfo getNoFinishOrder(Long userId);

    /**
     * 创建订单
     *
     * @param submitOrderVo 提交订单参数
     * @return 订单ID
     */
    Long saveOrder(SubmitOrderVo submitOrderVo);

    /**
     * 结束订单
     *
     * @param endOrderVo 结束订单参数
     */
    void endOrder(EndOrderVo endOrderVo);

    /**
     * 分页查询用户订单列表
     *
     * @param userId 用户ID
     * @return 订单列表
     */
    List<OrderInfo> selectOrderListByUserId(Long userId);

    /**
     * 获取订单详细信息
     *
     * @param id 订单ID
     * @return 订单详细信息
     */
    OrderInfo selectOrderInfoById(Long id);

    /**
     * 根据订单编号查询订单信息
     *
     * @param orderNo 订单编号
     * @return 订单信息
     */
    OrderInfo getByOrderNo(String orderNo);

    /**
     * 修改订单状态
     *
     * @param orderNo 订单编号
     */
    void processPaySuccess(String orderNo);

    /**
     * 传递过来sql语句，根据sql语句查询数据库得到报表数据
     *
     * @param sql sql语句
     * @return 报表数据
     */
    Map<String, Object> getOrderCount(String sql);

}
